
package tpoperativa.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import Database.*;


@WebServlet(name = "MyServlet", urlPatterns = {"/MyServlet"})
public class MyServlet extends HttpServlet {
        
    private String userName = "admin";
    private String password = "admin";
    private String dbName = "//localhost:1527/Operativa";
    
    private String err = "";
    
    private Connection con;
        
    public MyServlet() {
        try {
            con = ConnectionProvider.getInstance().getConnection("jdbc:derby:"+dbName+";create=false", userName, password);
        } catch (SQLException ex) {
            err = ex.getMessage();
        }
        
    }
    
    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        String nombre = "";        String apellido = "";        
        String nacimientoDia = "";        String nacimientoMes = "";        String nacimientoAnio = "";        
        String estadoCivil = "";        String hijos = "";        String cantidadHijos = "0";        
        String lu = "";        
        String telefonoArea = "";        String telefonoNumero = "";        String telefono = "";        
        String email = "";        String direccion = "";        String ciudad = "";        
        String provincia = "";        String carrera = "";        String anioIngreso = "";        
        String materia1 = "";        String recursa1 = "";        
        String materia2 = "";        String recursa2 = "";        
        String materia3 = "";        String recursa3 = "";        
        String materia4 = "";        String recursa4 = "";        
        String materia5 = "";        String recursa5 = "";        
        String materia6 = "";        String recursa6 = "";           
        String montoIngresos = "0";        String composicionGrupoFamiliar = "0";
        String hermanos = "";        String cuantosDependen = "0";
        String fuenteIng = "";        String conQuienVive = "";
        String conQuienViveOtro = "";       String alquila = "";        String montoAlquiler = "0";
        String gastosFijos = "0";        String comoAsiste = "";        String comentarios = "";
        
        // DATOS PERSONALES
        
        nombre = request.getParameter("q7_nombreCompleto[first]");
        apellido = request.getParameter("q7_nombreCompleto[last]");
        
        nacimientoDia = request.getParameter("q16_fechaDe16[day]");
        nacimientoMes = request.getParameter("q16_fechaDe16[month]");
        nacimientoAnio = request.getParameter("q16_fechaDe16[year]");
        
        estadoCivil = request.getParameter("q21_estadoCivil");
        
        hijos = request.getParameter("q44_tenesHijos44");
        cantidadHijos = request.getParameter("q49_cantidad49");
        if (cantidadHijos.equals("")) cantidadHijos = "0";
        
        lu = request.getParameter("q20_lu");
        
        telefonoArea = request.getParameter("q15_numeroDe15[area]");
        telefonoNumero = request.getParameter("q15_numeroDe15[phone]");
        telefono = "(" + telefonoArea + ") " + telefonoNumero;
        
        email = request.getParameter("q13_email13");
        
        direccion = request.getParameter("q17_direccion");
        
        ciudad = request.getParameter("q41_ciudadDe");
        
        provincia = request.getParameter("q40_provincia");
        
        // DATOS ACADEMICOS
        
        carrera = request.getParameter("q6_carrera");
        
        anioIngreso = request.getParameter("q24_anoDe24");
        
        materia1 = request.getParameter("q31_materia");
        recursa1 = request.getParameter("q50_recursa");
        
        materia2 = request.getParameter("q33_materia33");
        recursa2 = request.getParameter("q56_recursa56");
        
        materia3 = request.getParameter("q32_materia32");
        recursa3 = request.getParameter("q54_recursa54");
        
        materia4 = request.getParameter("q35_materia35");
        recursa4 = request.getParameter("q52_recursa52");
        
        materia5 = request.getParameter("q36_materia36");
        recursa5 = request.getParameter("q55_recursa55");
        
        materia6 = request.getParameter("q34_materia34");
        recursa6 = request.getParameter("q53_recursa53");
        
        // DATOS GRUPO FAMILIAR
        
        montoIngresos = request.getParameter("q46_montoIngresos");
        if (montoIngresos.equals("")) montoIngresos = "0";
        
        composicionGrupoFamiliar = request.getParameter("q45_composicionDel45");
        if (composicionGrupoFamiliar.equals("")) composicionGrupoFamiliar = "0";
        
        hermanos = request.getParameter("q47_tenesHermanos");
        
        cuantosDependen = request.getParameter("q48_cuantosDependen48");
        if (cuantosDependen.equals("")) cuantosDependen ="0";
        
        // SITUACION SOCIOECONOMICA
        
        String[] fuenteIngresos = request.getParameterValues("q57_fuenteDe57[]");
        fuenteIng = "";
        if (fuenteIngresos != null) {
            for (int i = 0; i < fuenteIngresos.length; i++) {
                fuenteIng += fuenteIngresos[i];
                if (i < fuenteIngresos.length-1) {
                    fuenteIng += ",";
                }
            }
        }
        
        conQuienVive = request.getParameter("q26_conQuien");
        conQuienViveOtro = request.getParameter("q26_conQuien[other]");
        
        alquila = request.getParameter("q60_alquila60");
        
        montoAlquiler = request.getParameter("q39_montoDe");
        if (montoAlquiler.equals("")) montoAlquiler = "0";
        
        gastosFijos = request.getParameter("q43_gastosFijos43");
        if (gastosFijos.equals("")) gastosFijos = "0";
        
        comoAsiste = request.getParameter("q59_comoAsiste59");
        
        // COMENTARIOS
        
        comentarios = request.getParameter("q5_comentarios");
        
        DBManager database = new DBManager("Operativa", "admin", "admin");
        
        String queryPERSONA = "INSERT INTO App.PERSONA VALUES ('"+nombre+"','"+apellido+"',"
                    +nacimientoDia+","+nacimientoMes+","+nacimientoAnio+",'"
                    +estadoCivil+"','"+hijos+"',"+cantidadHijos+",'"+lu+"','"
                    +telefono+"','"+email+"','"+direccion+"','"+ciudad+"','"+provincia+"','"
                    +carrera+"','"+anioIngreso+"','"+materia1+"','"+recursa1+"','"
                    +materia2+"','"+recursa2+"','"+materia3+"','"+recursa3+"','"
                    +materia4+"','"+recursa4+"','"+materia5+"','"+recursa5+"','"
                    +materia6+"','"+recursa6+"',"+montoIngresos+","+composicionGrupoFamiliar+",'"
                    +hermanos+"',"+cuantosDependen+",'"+fuenteIng+"','"+conQuienVive+"','"
                    +conQuienViveOtro+"','"+alquila+"',"+montoAlquiler+","+gastosFijos+",'"+comoAsiste+"')";
        
        String queryCOMENTARIO = "INSERT INTO App.COMENTARIO VALUES ('"+lu+"','"+comentarios+"')";
        
        
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("length: "+fuenteIngresos.length+"<br />");
        
        try {
            database.connect();            
            database.execute(queryPERSONA);
            database.execute(queryCOMENTARIO);
            out.println("¡El formulario ha sido ingresado con éxito!");
        } catch (SQLException ex) {
            out.println(ex.getMessage()+"<br />");
        }
        
        out.println("</html>");
        
       /* 
        String nombre = request.getParameter("nombre");
        String[] vehiculo = request.getParameterValues("vehiculo");
        String sexo = request.getParameter("sexo");
        
        PrintWriter out = response.getWriter();
        
        out.println("<html>");
        out.println("Nombre: "+nombre+"<br />");
        out.println("Vehiculo: <br />");
        for (int i = 0; vehiculo != null && i < vehiculo.length; i++) {
            out.print(vehiculo[i]+" ");
        }
        out.println("Sexo: "+sexo+"<br />");
        out.println("</html>");
        
        
//        if (con == null) {
//            err += "con == null ";
//            PrintWriter out = response.getWriter();
//
//            out.println("<html><body>");
//            out.println("Errores: &nbsp;" + err + "<br />");
//            out.println("<a href=\"http://localhost/TPOperativa\">Volver</a>");
//            out.println("</body></html>");
//        } else { // con != null
//            
//            /*
//             * Agrega el nuevo nombre a la tabla
//             */
//            try {
//                
//                Random r = new Random();
//                
//                PreparedStatement query = con.prepareStatement("INSERT INTO APP.PERSONA VALUES (" + r.nextInt(9999) + ", '" + nombre + "')");
//                
//                query.execute();
//                
//            } catch (SQLException ex) {
//                err = err + ex.getMessage();
//            }
//            
//            /*
//             * Consulta toda la tabla para mostrarla
//             */
//            
//            String nombres = "";
//            
//            try {
//                
//                PreparedStatement query = con.prepareStatement("select * from APP.PERSONA");
//                
//                ResultSet tablaPersona = query.executeQuery();
//                
//                while (tablaPersona.next()) {
//                    nombres += tablaPersona.getString(2) + ", ";
//                }
//                
//            } catch (SQLException ex) {
//                err = err + ex.getMessage();
//            }
//            
//            PrintWriter out = response.getWriter();
//
//            out.println("<html><body>");
//            out.println("Errores: &nbsp;" + err + "<br />");
//            out.println("Nombres: &nbsp;" + nombres + "<br/>");
//            out.println("<a href=\"http://localhost/TPOperativa\">Volver</a>");
//            out.println("</body></html>");
//            
//        }
        
    }

}
